\documentclass[11pt]{article}
\usepackage{graphics}
\usepackage{a4wide}

\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage[french]{minitoc}

\begin{document}

\begin{center}

{\Large Examen Java EE - Janvier 2011} \\

{\bf Tout les documents sont interdits (livres, cours et TD)} \\

\end{center}

\section{Questions de cours (10 points)}

\begin{enumerate}

  \item{Donner la signification de l'acronyme JEE. (0,5 point)}

  \item{A quoi sert un Object-Relational Mapper ? (1 point)}

  \item{A quoi sert le patron de conception Data Access Object? (1 point)}

  \item{D{\'e}finisser le principe de transactionnalit{\'e}, cons{\'e}quences sur la base, etc. (1 point)}
  
  \item{D{\'e}finisser les trois notions suivantes: unit{\'e} de persistence, contexte de persistence, gestionnaire d'entit{\'e}. (2 points)}
  
  \item{Donner les trois anomalies possibles que l'on peut rencontrer lors d'acc{\`e}s concurrents {\`a} une base de donn{\'e}es. (2 points)}
  
  \item{Donner les diff{\'e}rents {\'e}tats possibles d'une entit{\'e}. (2 points)}

\end{enumerate}

\section{Questions autour de JPA (5 points)}

Une personne est constitu{\'e}e d'un seul nom, d'un seul pr{\'e}nom et d'un code de s{\'e}curit{\'e} sociale. Le nom et le pr{\'e}nom sont des cha{\^i}nes de caract{\`e}res constitu{\'e}es au maximum de 64 caract{\`e}res. Le code de s{\'e}curit{\'e} sociale est unique et il est constitu{\'e} de 15 chiffres. \\

Une adresse est constitu{\'e}e d'un num{\'e}ro de rue, d'un nom de rue, d'un code postal et du nom d'une ville. Le code postal est un nombre et il est unique. Le nom de la ville est une cha{\^i}ne de caract{\`e}res d'au maximum 64 caract{\`e}res, le nom de la rue est une cha{\^i}ne de caract{\`e}res constitu{\'e}e d'au maximum 128 caract{\`e}res. Enfin, le num{\'e}ro dans la rue est un nombre. \\

Une personne peut avoir plusieurs adresses qui lui sont attach{\'e}es. Par simplification, une adresse n'est reli{\'e}e qu'{\`a} une personne. \\

  \begin{enumerate}
   
   \item{Donnez le code Java et les annotations JPA des deux entit{\'e}s d{\'e}crites ci-dessus. (1,5 point)}
   
   \item{Enrichir ce que vous avez fait pr{\'e}c{\'e}demment pour mod{\'e}liser les relations entre ces deux entit{\'e}s. (1,5 point)}
   
   \item{Donnez le code Java de la m{\'e}thode permettant de trouver une personne en fonction du couple (nom, pr{\'e}nom). (1 point)}
   
   \item{Quel objet (voir point 5 des questions de cours) et quelle annotation JPA est obligatoire dans une DAO? (1 point)}
   
  \end{enumerate}

\section{Probl{\`e}me (10 points)}

  \begin{enumerate}
    
    \item{Ecriver la page JSF permettant de supprimer une personne. Cette page affiche le nom et le pr{\'e}nom de la personne et deux boutons. L'un "Valider" et l'autre "Annuler" cette suppression. (2 points)}
    
    \item{Ecriver la page JSF permettant d'afficher une liste de personne. Cette page affiche un tableau avec quatre colonnes. La premi{\`e}re affiche le num{\'e}ro de s{\'e}curit{\'e} social de la personne. La seconde colonne affiche le pr{\'e}nom de la personne. La troisi{\`e}me affiche le nom de la personne. Enfin, la quatri{\`e}me colonne affiche un lien permettant de supprimer la personne. (3 points).}
    
    \item{Ecriver le flow permettant de charger la liste des personnes {\`a} afficher dans la page du point 2, d'offrir le lien vers l'action de suppression et l'affichage de la page de suppression du point 1. Et enfin, permettant de r{\'e}aliser les actions de "Validation" ou d' "Annulation" de la suppression. (4 points)}
    
    \item{Donner l'interface du service permettant de r{\'e}aliser l'ensemble des op{\'e}rations dont vous avez besoin dans votre flow. (1 point)}
    
  \end{enumerate}

\end{document}